package com.ws.universal.tools.adapter;


import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import java.util.List;

public class LiveViewPagerAdapter extends PagerAdapter {


    public List<View> mViewList;

    public List<View> getData() {
        return mViewList;
    }

    public void setData(List<View> mViewList) {

        if (null == mViewList) {
            notifyDataSetChanged();
            return;
        }
        this.mViewList = mViewList;
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        if (mViewList != null) {
            return mViewList.size();
        }
        return 0;
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        if (mViewList.size() > 0) {
            container.removeView(mViewList.get(position));
        }

    }

    @Override
    public int getItemPosition(@NonNull Object object) {
        return super.getItemPosition(object);
    }


    //该函数用以返回给定对象的位置，给定对象是由 instantiateItem() 的返回值。
    //在 ViewPager.dataSetChanged() 中将对该函数的返回值进行判断，以决定是否最终触发
    // PagerAdapter.instantiateItem() 函数。
    //在 PagerAdapter 中的实现是直接传回 POSITION_UNCHANGED。如果该函数不被重载，
    // 则会一直返回 POSITION_UNCHANGED，从而导致 ViewPager.dataSetChanged() 被调用时，
    // 认为不必触发 PagerAdapter.instantiateItem()。很多人因为没有重载该函数，而导致调用
    //PagerAdapter.notifyDataSetChanged() 后，什么都没有发生。
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(mViewList.get(position));
        return mViewList.get(position);
    }


}
